S3 Express One ZoneをVPCエンドポイント経由で利用してみた
re:Invent2023 で発表されたS3の新しいストレージクラス、「Amazon S3 Express One Zone」
VPCエンドポイント(Gateway型)経由の利用を試す機会がありましたので、紹介させて頂きます。
VPC
検証用のVPCを、VPCウィザードを利用して作成しました。
- リージョン: 東京
- AZ数: 1
- パブリックサブネット、プライベートサブネット: それぞれ「1」
- NAT ゲートウェイ : 「なし」
- VPC エンドポイント: 「S3ゲートウェイ」
エンドポイント
サービス 「com.amazonaws.ap-northeast-1.s3express」 の VPCエンドポイント (Gateway型)を作成。
検証用VPCのプライベートサブネットのルートテーブルに関連付けを行いました。
EC2
検証用VPCのプライベートサブネットに、 AmazonLinux2023のEC2を検証環境として起動しました。
S3 Express One Zoneの S3を利用するため、awscliは最新バージョンに更新しました。
sudo dnf remove awscli -y unzip awscliv2.zip sudo ./aws/install sudo ln -s /usr/local/bin/aws /usr/bin/aws
$ aws --version aws-cli/2.15.0 Python/3.11.6 Linux/6.1.61-85.141.amzn2023.aarch64 exe/aarch64.amzn.2023 prompt/off
動作確認
東京リージョンに設置した S3 Express One Zone のS3バケットの 操作を試みました。
list-objects-v2
$ aws s3api list-objects-v2 --bucket s3-exp-00000000--apne1-az4--x-s3 --debug 2023-12-12 16:04:37,480 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/2.15.0 Python/3.11.6 Linux/6.1.61-85.141.amzn2023.aarch64 exe/aarch64.amzn.2023 2023-12-12 16:04:37,480 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['s3api', 'list-objects-v2', '--bucket', 's3-exp-00000000--apne1-az4--x-s3', '--debug'] (略) 2023-12-12 16:04:37,613 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): s3-exp-00000000--apne1-az4--x-s3.s3express-apne1-az4.ap-northeast-1.amazonaws.com:443 2023-12-12 16:04:37,740 - MainThread - urllib3.connectionpool - DEBUG - https://s3-exp-00000000--apne1-az4--x-s3.s3express-apne1-az4.ap-northeast-1.amazonaws.com:443 "GET /?session HTTP/1.1" 200 1131 2023-12-12 16:04:37,740 - MainThread - botocore.parsers - DEBUG - Response headers: {'server': 'AmazonS3', 'x-amz-request-id': '0000', 'x-amz-id-2': 'jAseKebBe99c', 'content-type': 'application/xml', 'content-length': '1131', 'date': 'Tue, 12 Dec 2023 16:04:37 GMT'} (略) { "Contents": [ { "Key": "awscliv2.zip", "LastModified": "2023-12-12T15:50:05+00:00", "ETag": "\"000000000\"", "ChecksumAlgorithm": [ "CRC32" ], "Size": 58138730, "StorageClass": "EXPRESS_ONEZONE" } ], "RequestCharged": null }
cp
高レベルコマンドも利用可能でした。
$ aws s3 cp s3://s3-exp-00000000--apne1-az4--x-s3/awscliv2.zip . download: s3://s3-exp-00000000--apne1-az4--x-s3/awscliv2.zip to ./awscliv2.zip $ aws s3 cp awscliv2.zip s3://s3-exp-00000000--apne1-az4--x-s3/ upload: ./awscliv2.zip to s3://s3-exp-00000000--apne1-az4--x-s3/awscliv2.zip
VPCエンドポイントなし
サービス 「com.amazonaws.ap-northeast-1.s3express」 の VPCエンドポイントのルーティングを無効化すると、 プライベートサブネットのEC2から、S3 Express One Zone のS3は利用不能になりました。
2023-12-12 **:**:**,*** - ThreadPoolExecutor-0_0 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): s3-exp-00000000--apne1-az4--x-s3.s3express-apne1-az4.ap-northeast-1.amazonaws.com:443
まとめ
VPCエンドポイント経由で S3 Express One Zone を利用するためには、「s3express」 用のGateway型のエンドポイントを従来のS3とは別に作成する必要があります。
プライベートサブネット内のリソースから S3 Express One Zone を利用する場合、 NAT Gateway経由の通信が発生を回避するため、「s3express」用のVPCエンドポイントの追加をお試し下さい。